package com.example.kotlindemo

//定义代码
class TestInvoke {
    //高阶函数类型变量
    private var mSingleListener: ((Int) -> Unit)? = null
    //设置变量
    public fun setSingleListener(listener:((Int) -> Unit)?){
        this.mSingleListener = listener
    }
    //
    fun testRun() {
        //调用invoke函数
        mSingleListener?.invoke(100)
        //使用invoke约定，省去invoke
        if (mSingleListener != null){
            mSingleListener!!(100)
        }
    }
}

fun main() {
    val function1 = object: Function1<Int,Unit> {
        override fun invoke(p1: Int) {
            println("$p1")
        }
    }
    val testInvoke  = TestInvoke()
    testInvoke.setSingleListener(function1)


}
